/**************************************************************************
** CuteRSS is a simple RSS/Atom client for managing RSS/Atom Feeds
**
** Copyright (C) 2010 Prakash Nadar <prakash.nadar@gmail.com>
**
** This program is free software: you can redistribute it and/or modify
**     it under the terms of the GNU General Public License as published by
**     the Free Software Foundation, either version 3 of the License, or
**     (at your option) any later version.
**
**     This program is distributed in the hope that it will be useful,
**     but WITHOUT ANY WARRANTY; without even the implied warranty of
**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**     GNU General Public License for more details.
**
**     You should have received a copy of the GNU General Public License
**     along with this program.  If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/
#ifndef RSSFEEDDATAMODEL_H
#define RSSFEEDDATAMODEL_H

#include <QAbstractListModel>

class RssItemData;
class FeedFetcher;
class RssFetchData;
class QTimer;

typedef QList<RssItemData*> RssItems;

class RssFeedDataModel : public QAbstractListModel
{
    Q_OBJECT

public:
    explicit RssFeedDataModel(QString url, QObject *parent = 0);

    int rowCount(const QModelIndex & parent = QModelIndex()) const;

    QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);

    int columnCount ( const QModelIndex & parent = QModelIndex() ) const;
    QVariant headerData(int section, Qt::Orientation orientation,int role = Qt::DisplayRole) const;
    void setUrl(QString url);

public:
    RssItems mItems;

private:
    void mergeFeedData(RssFetchData* data);

signals:

public slots:
    void xmlDataAvailable(RssFetchData* data);
    void timeout();

private:
    FeedFetcher* mManager;
    QTimer *mTimer;
};

#endif // RSSFEEDDATAMODEL_H

